package com.viknix.threadpool.manager.cluster.file;

import java.nio.file.WatchEvent;
import java.util.concurrent.Executor;

/**
 * @Author: Dongqi
 * @Date: 2021/11/16 15:58
 * @Version 1.0
 * @Description: 文件系统监视器
 */
@SuppressWarnings("PMD.AbstractClassShouldStartWithAbstractNamingRule")
public abstract class FileWatcher {

    /**
     * 发生文件更改时触发。
     *
     * @param event {@link FileChangeEvent}
     */
    public abstract void onChange(FileChangeEvent event);

    /**
     * 该监听器是否对该次变化感兴趣
     *
     * @param context {@link WatchEvent#context()} WatchEvent 上下文信息。
     * @return 这是观察者兴趣上下文吗?
     */
    public abstract boolean interest(String context);

    /**
     * 如果 FileWatcher 有自己的线程池，就使用这个线程池来执行，否则由当前执行的线程来回调 watcher 方法
     *
     * @return {@link Executor}
     */
    public Executor executor() {
        return null;
    }

}
